package rui.game;

import rui.game.component.Count;

import javax.swing.*;

import static rui.game.RandomRule.SjsRule;
import static rui.game.rendering.MyColor.changeColor;

public class Result {

    JButton[][] btnary;

    public Result() {
//            if (new Result.Success(btnary).IsWin()) {
//                JOptionPane.showMessageDialog(null, "恭喜你，胜利了！", "YOU WIN", JOptionPane.INFORMATION_MESSAGE);
//                count = 0;
//                for (int i = 0; i < 4; i++) {// 利用嵌套循环清空所有的text
//                    for (int j = 0; j < 4; j++) {
//                        btnary[i][j].setText("");
//                    }
//                }
//                SjsRule(btnary);// 再执行随机数的方法
//                Labelcount.setText("0");
//                changeColor(btnary);
//            }
//            if (new Result.Fail(btnary).Isshu()) {
//                JOptionPane.showMessageDialog(null, "很遗憾,游戏结束！", "GAME OVER", JOptionPane.INFORMATION_MESSAGE);
//                count = 0;
//                for (int i = 0; i < 4; i++) {// 利用嵌套循环清空所有的text
//                    for (int j = 0; j < 4; j++) {
//                        btnary[i][j].setText("");
//                    }
//                }
//                SjsRule(btnary);// 再执行随机数的方法
//                Labelcount.setText("0");
//                changeColor(btnary);
//            }
    }


    public Result(JButton[][] btnary) {
        this.btnary = btnary;
    }

    public static class Success extends Result {

        public Success(JButton[][] btnary) {
            super(btnary);
        }

        // 是否赢了。
        public boolean IsWin() {
            for (int a = 0; a < 4; a++) {
                for (int b = 0; b < 4; b++) {// for循环遍历16个按钮
                    String str = btnary[a][b].getText();// 根据获得的ab的值来确定位置以及获取ab位置的字符串文本用str接收
                    if (str.equals("2048")) {// 每接收一次就判断一次,判断接收的数字中str有没有等于2048的
                        return true;// 如果有就返回true
                    }
                }
            }
            return false;
        }
    }


    public static class Fail extends Result {

        public Fail(JButton[][] btnary) {
            super(btnary);
        }

        // 输了的方法
        public boolean Isshu() {
            int c = 0;
            String qianyiwei = null, current = null, shangyiwei;
            for (int a = 0; a < 4; a++) {
                for (int b = 1; b < 4; b++) {// for循环遍历16个按钮
                    current = btnary[a][b].getText();// 根据获得的ab的值来确定位置以及获取ab位置的字符串文本用str接收
                    qianyiwei = btnary[a][b - 1].getText();
                    if (current.equals("") || qianyiwei.equals("")) {// 每接收一次就判断一次,判断接收的数字中str有没有等于2048的
                        c++;
                    }
                    if (current.equals(qianyiwei)) {
                        c++;
                    }
                }
            }
            for (int d = 1; d < 4; d++) {
                for (int e = 0; e < 4; e++) {// for循环遍历16个按钮
                    current = btnary[d][e].getText();// 根据获得的de的值来确定位置以及获取ab位置的字符串文本用str接收
                    shangyiwei = btnary[d - 1][e].getText();
                    if (current.equals("") || shangyiwei.equals("")) {// 每接收一次就判断一次,判断接收的数字中str有没有等于2048的
                        c++;
                    }
                    if (current.equals(shangyiwei)) {
                        c++;
                    }
                }
            }
            if (c == 0) {
                return true;
            }
            return false;
        }

    }

    //TODO result
    private void TODO(){
        int count;

        Count Labelcount=new Count();



        if (new Result.Success(btnary).IsWin()) {
            JOptionPane.showMessageDialog(null, "恭喜你，胜利了！", "YOU WIN", JOptionPane.INFORMATION_MESSAGE);
            count = 0;
            for (int i = 0; i < 4; i++) {// 利用嵌套循环清空所有的text
                for (int j = 0; j < 4; j++) {
                    btnary[i][j].setText("");
                }
            }
            SjsRule(btnary);// 再执行随机数的方法
            Labelcount.setText("0");
            changeColor(btnary);
        }
        if (new Result.Fail(btnary).Isshu()) {
            JOptionPane.showMessageDialog(null, "很遗憾,游戏结束！", "GAME OVER", JOptionPane.INFORMATION_MESSAGE);
            count = 0;
            for (int i = 0; i < 4; i++) {// 利用嵌套循环清空所有的text
                for (int j = 0; j < 4; j++) {
                    btnary[i][j].setText("");
                }
            }
            SjsRule(btnary);// 再执行随机数的方法
            Labelcount.setText("0");
            changeColor(btnary);
        }
    }
}
